parser grammar CalculatorParser;

options{tokensVocab=CalculatorLexer;}

e returns [int v]
	: a=e op=(MUL|DIV) b=e {$v = eval($a.v, $op.type, $b.v);}
	| a=e op=(ADD|SUB) b=e {$v = eval($a.v, $op.type, $b.v);}
	| INT                  {$v = $INT.int;}
	| ID
	 {
	 	String id = $ID.text;
	 	$v = memory.containsKey(id) ? memory.get(id) : 0;
	 }
	| LEFTON e RIGHTON            {$v = $e.v;}
	;
	

